{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "from matplotlib import pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "from tensorflow.examples.tutorials.mnist import input_data\n",
    "import tensorflow as tf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Extracting ./train-images-idx3-ubyte.gz\n",
      "Extracting ./train-labels-idx1-ubyte.gz\n",
      "Extracting ./t10k-images-idx3-ubyte.gz\n",
      "Extracting ./t10k-labels-idx1-ubyte.gz\n",
      "(55000, 784)\n"
     ]
    }
   ],
   "source": [
    "mnist=input_data.read_data_sets('.')\n",
    "print (mnist.train.images.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(55000,)\n",
      "(10000, 784)\n"
     ]
    }
   ],
   "source": [
    "print (mnist.train.labels.shape)\n",
    "print (mnist.test.images.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 16 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8,8))\n",
    "#print (mnist.train.images[0]) #一唯\n",
    "for i in range(16):\n",
    "    plt.subplot(4,4,i+1)\n",
    "    plt.axis( 'off')\n",
    "    plt.title('[%s]'%mnist.train.labels[i])\n",
    "    plt.imshow(mnist.train.images[i].reshape(28,28))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [],
   "source": [
    "def initialize(shape,stddev=0.1):\n",
    "    return tf.truncated_normal(shape,stddev=stddev)\n",
    "x=tf.placeholder('float',[None,784])\n",
    "y=tf.placeholder('int64',[None])\n",
    "\n",
    "lr=tf.placeholder('float')\n",
    "L1_units_count=300  #增加神经元\n",
    "W_1=tf.Variable(initialize([784,L1_units_count ]))\n",
    "b_1=tf.Variable(initialize([L1_units_count]))\n",
    "logits_1=tf.matmul(x,W_1) +b_1\n",
    "output_1=tf.nn.relu(logits_1) #第一层\n",
    "\n",
    "global_step=tf.Variable(0,trainable=False)\n",
    "lr2=tf.train.exponential_decay(0.8,global_step,100,0.99,staircase=True)#设置学习率衰减\n",
    "\n",
    "L2_units_count = 100\n",
    "W_2 = tf.Variable(initialize([L1_units_count, L2_units_count])) #第二层\n",
    "b_2 = tf.Variable(initialize([L2_units_count]))\n",
    "logits_2 = tf.matmul(output_1, W_2) + b_2  \n",
    "output_2=tf.nn.relu(logits_2)\n",
    "\n",
    "L3_units_count = 10 \n",
    "W_3 = tf.Variable(initialize([L2_units_count, L3_units_count])) #第三层\n",
    "b_3 = tf.Variable(initialize([L3_units_count]))\n",
    "logits_3 = tf.matmul(output_2, W_3) + b_3  \n",
    "\n",
    "logits = logits_3\n",
    "REGULARIZATION_RATE=0.0001\n",
    "regularizer=tf.contrib.layers.l2_regularizer(REGULARIZATION_RATE)\n",
    "regularization=regularizer(W_1)+regularizer(W_2)+regularizer(W_3) #加入l2正则项\n",
    "#regularization=regularizer(W_1)+regularizer(W_2)\n",
    "cross_entropy_loss=tf.reduce_mean(\n",
    "tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=y))+regularization #损失\n",
    "#optimizer=tf.train.GradientDescentOptimizer(\n",
    "#learning_rate=lr).minimize(cross_entropy_loss) #梯度下降优化\n",
    "optimizer=tf.train.GradientDescentOptimizer(\n",
    "learning_rate=lr2).minimize(cross_entropy_loss,global_step=global_step) #梯度下降优化\n",
    "\n",
    "pred=tf.nn.softmax(logits)\n",
    "correct_pred=tf.equal(tf.argmax(pred,1),y)\n",
    "accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))#准确率\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "after 100 training steps, the loss is 0.366868, the validation accuracy is 0.9306\n",
      "after 200 training steps, the loss is 0.272686, the validation accuracy is 0.9418\n",
      "after 300 training steps, the loss is 0.331701, the validation accuracy is 0.9594\n",
      "after 400 training steps, the loss is 0.358703, the validation accuracy is 0.9618\n",
      "after 500 training steps, the loss is 0.331257, the validation accuracy is 0.9516\n",
      "after 600 training steps, the loss is 0.314567, the validation accuracy is 0.9518\n",
      "after 700 training steps, the loss is 0.209902, the validation accuracy is 0.9706\n",
      "after 800 training steps, the loss is 0.238253, the validation accuracy is 0.9716\n",
      "after 900 training steps, the loss is 0.288971, the validation accuracy is 0.9692\n",
      "after 1000 training steps, the loss is 0.187561, the validation accuracy is 0.9748\n",
      "after 1100 training steps, the loss is 0.192623, the validation accuracy is 0.9744\n",
      "after 1200 training steps, the loss is 0.134579, the validation accuracy is 0.9744\n",
      "after 1300 training steps, the loss is 0.130138, the validation accuracy is 0.9772\n",
      "after 1400 training steps, the loss is 0.185201, the validation accuracy is 0.9778\n",
      "after 1500 training steps, the loss is 0.138128, the validation accuracy is 0.9766\n",
      "after 1600 training steps, the loss is 0.157218, the validation accuracy is 0.9768\n",
      "after 1700 training steps, the loss is 0.108341, the validation accuracy is 0.9788\n",
      "after 1800 training steps, the loss is 0.211146, the validation accuracy is 0.9716\n",
      "after 1900 training steps, the loss is 0.170141, the validation accuracy is 0.9776\n",
      "after 2000 training steps, the loss is 0.156865, the validation accuracy is 0.98\n",
      "after 2100 training steps, the loss is 0.112976, the validation accuracy is 0.9814\n",
      "after 2200 training steps, the loss is 0.10768, the validation accuracy is 0.9814\n",
      "after 2300 training steps, the loss is 0.186851, the validation accuracy is 0.9748\n",
      "after 2400 training steps, the loss is 0.1381, the validation accuracy is 0.9792\n",
      "after 2500 training steps, the loss is 0.134471, the validation accuracy is 0.9782\n",
      "after 2600 training steps, the loss is 0.103361, the validation accuracy is 0.9792\n",
      "after 2700 training steps, the loss is 0.100915, the validation accuracy is 0.9832\n",
      "after 2800 training steps, the loss is 0.11254, the validation accuracy is 0.981\n",
      "after 2900 training steps, the loss is 0.175107, the validation accuracy is 0.9592\n",
      "after 3000 training steps, the loss is 0.103361, the validation accuracy is 0.9796\n",
      "after 3100 training steps, the loss is 0.0916816, the validation accuracy is 0.982\n",
      "after 3200 training steps, the loss is 0.0996876, the validation accuracy is 0.9812\n",
      "after 3300 training steps, the loss is 0.104835, the validation accuracy is 0.984\n",
      "after 3400 training steps, the loss is 0.156058, the validation accuracy is 0.9788\n",
      "after 3500 training steps, the loss is 0.114758, the validation accuracy is 0.977\n",
      "after 3600 training steps, the loss is 0.0934703, the validation accuracy is 0.978\n",
      "after 3700 training steps, the loss is 0.093463, the validation accuracy is 0.9858\n",
      "after 3800 training steps, the loss is 0.1084, the validation accuracy is 0.984\n",
      "after 3900 training steps, the loss is 0.104618, the validation accuracy is 0.9806\n",
      "after 4000 training steps, the loss is 0.0914741, the validation accuracy is 0.9834\n",
      "after 4100 training steps, the loss is 0.141681, the validation accuracy is 0.9826\n",
      "after 4200 training steps, the loss is 0.0907291, the validation accuracy is 0.9828\n",
      "after 4300 training steps, the loss is 0.0991402, the validation accuracy is 0.9836\n",
      "after 4400 training steps, the loss is 0.0854905, the validation accuracy is 0.9836\n",
      "after 4500 training steps, the loss is 0.0839432, the validation accuracy is 0.9842\n",
      "after 4600 training steps, the loss is 0.0836601, the validation accuracy is 0.9856\n",
      "after 4700 training steps, the loss is 0.0859498, the validation accuracy is 0.9836\n",
      "after 4800 training steps, the loss is 0.0880369, the validation accuracy is 0.9858\n",
      "after 4900 training steps, the loss is 0.0829903, the validation accuracy is 0.9852\n",
      "after 5000 training steps, the loss is 0.0836582, the validation accuracy is 0.9834\n",
      "after 5100 training steps, the loss is 0.0801909, the validation accuracy is 0.9852\n",
      "after 5200 training steps, the loss is 0.0874083, the validation accuracy is 0.9834\n",
      "after 5300 training steps, the loss is 0.0814871, the validation accuracy is 0.9854\n",
      "after 5400 training steps, the loss is 0.0774048, the validation accuracy is 0.9854\n",
      "after 5500 training steps, the loss is 0.0835586, the validation accuracy is 0.9864\n",
      "after 5600 training steps, the loss is 0.0772225, the validation accuracy is 0.9854\n",
      "after 5700 training steps, the loss is 0.0773016, the validation accuracy is 0.9846\n",
      "after 5800 training steps, the loss is 0.0794741, the validation accuracy is 0.9866\n",
      "after 5900 training steps, the loss is 0.0769209, the validation accuracy is 0.9862\n",
      "after 6000 training steps, the loss is 0.0747449, the validation accuracy is 0.9862\n",
      "after 6100 training steps, the loss is 0.0763966, the validation accuracy is 0.9862\n",
      "after 6200 training steps, the loss is 0.0750338, the validation accuracy is 0.9852\n",
      "after 6300 training steps, the loss is 0.0744487, the validation accuracy is 0.9864\n",
      "after 6400 training steps, the loss is 0.0722253, the validation accuracy is 0.9852\n",
      "after 6500 training steps, the loss is 0.0723221, the validation accuracy is 0.986\n",
      "after 6600 training steps, the loss is 0.0744769, the validation accuracy is 0.986\n",
      "after 6700 training steps, the loss is 0.0719305, the validation accuracy is 0.9852\n",
      "after 6800 training steps, the loss is 0.0723005, the validation accuracy is 0.9858\n",
      "after 6900 training steps, the loss is 0.0699698, the validation accuracy is 0.9852\n",
      "after 7000 training steps, the loss is 0.0710773, the validation accuracy is 0.9862\n",
      "after 7100 training steps, the loss is 0.070379, the validation accuracy is 0.9862\n",
      "after 7200 training steps, the loss is 0.0687036, the validation accuracy is 0.9858\n",
      "after 7300 training steps, the loss is 0.070303, the validation accuracy is 0.986\n",
      "after 7400 training steps, the loss is 0.0715813, the validation accuracy is 0.987\n",
      "after 7500 training steps, the loss is 0.0684738, the validation accuracy is 0.9864\n",
      "after 7600 training steps, the loss is 0.0663827, the validation accuracy is 0.986\n",
      "after 7700 training steps, the loss is 0.0693547, the validation accuracy is 0.9858\n",
      "after 7800 training steps, the loss is 0.0672015, the validation accuracy is 0.9852\n",
      "after 7900 training steps, the loss is 0.0681303, the validation accuracy is 0.9868\n",
      "after 8000 training steps, the loss is 0.0672654, the validation accuracy is 0.9866\n",
      "after 8100 training steps, the loss is 0.0656076, the validation accuracy is 0.9858\n",
      "after 8200 training steps, the loss is 0.0679238, the validation accuracy is 0.9862\n",
      "after 8300 training steps, the loss is 0.0640085, the validation accuracy is 0.9864\n",
      "after 8400 training steps, the loss is 0.0651252, the validation accuracy is 0.9858\n",
      "after 8500 training steps, the loss is 0.0669066, the validation accuracy is 0.9864\n",
      "after 8600 training steps, the loss is 0.0637367, the validation accuracy is 0.987\n",
      "after 8700 training steps, the loss is 0.0638192, the validation accuracy is 0.9862\n",
      "after 8800 training steps, the loss is 0.0634617, the validation accuracy is 0.9858\n",
      "after 8900 training steps, the loss is 0.063144, the validation accuracy is 0.9868\n",
      "after 9000 training steps, the loss is 0.0628742, the validation accuracy is 0.9856\n",
      "after 9100 training steps, the loss is 0.0631669, the validation accuracy is 0.9862\n",
      "after 9200 training steps, the loss is 0.0626583, the validation accuracy is 0.9864\n",
      "after 9300 training steps, the loss is 0.0644041, the validation accuracy is 0.9862\n",
      "after 9400 training steps, the loss is 0.0613195, the validation accuracy is 0.9866\n",
      "after 9500 training steps, the loss is 0.0620949, the validation accuracy is 0.9862\n",
      "after 9600 training steps, the loss is 0.0621328, the validation accuracy is 0.9854\n",
      "after 9700 training steps, the loss is 0.0623956, the validation accuracy is 0.9868\n",
      "after 9800 training steps, the loss is 0.0608262, the validation accuracy is 0.9862\n",
      "after 9900 training steps, the loss is 0.0633432, the validation accuracy is 0.9854\n",
      "the training is finish!\n",
      "('the test accuarcy is:', 0.9833)\n"
     ]
    }
   ],
   "source": [
    "batch_size=100\n",
    "trainig_step=6000\n",
    "saver=tf.train.Saver()\n",
    "import numpy as np\n",
    "with tf.Session() as sess:\n",
    "    sess.run(tf.global_variables_initializer())\n",
    "    validate_data={\n",
    "        x: mnist.validation.images,\n",
    "        y: mnist.validation.labels,\n",
    "    }\n",
    "    test_data = {x: mnist.test.images, y: mnist.test.labels}\n",
    "\n",
    "    for i in range(trainig_step):\n",
    "        xs, ys = mnist.train.next_batch(batch_size)\n",
    "        _, loss = sess.run(\n",
    "            [optimizer, cross_entropy_loss],\n",
    "            feed_dict={\n",
    "                x: xs,\n",
    "                y: ys,\n",
    "                #lr: 0.1,\n",
    "               # lr:lr2,\n",
    "            })\n",
    "        #每100次训练打印一次损失值与验证准确率\n",
    "        if i > 0 and i % 100 == 0:\n",
    "            validate_accuracy = sess.run(accuracy, feed_dict=validate_data)\n",
    "            print(\n",
    "                \"after %d training steps, the loss is %g, the validation accuracy is %g\"\n",
    "                % (i, loss, validate_accuracy))\n",
    "            #saver.save(sess, './model.ckpt', global_step=i)\n",
    "\n",
    "    print(\"the training is finish!\")\n",
    "    #最终的测试准确率\n",
    "    acc = sess.run(accuracy, feed_dict=test_data)\n",
    "    print(\"the test accuarcy is:\", acc)\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Restoring parameters from ./model.ckpt-900\n",
      "0.9375\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 16 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#对模型结构的理解10分。 \n",
    "#   采用2层神经网络，第一层使用 784*100的w参数，第二层用100*10。\n",
    "#对模型训练过程（梯度如何计算，参数如何更新）的理解10分。 \n",
    "#    损失为稀疏softmax 交叉熵，使用GradientDescentOptimizer 最小化损失。\n",
    "#对计算图的理解10分。 \n",
    "#    在session.sun之前的定义都是在描绘计算图，可以使用grap = tf.get_default_graph() 获取graph\n",
    "#解释这⾥的模型为什么效果⽐较差10分。\n",
    "# 可能存在噪音影响，过拟合，学习率没有设置衰减，可能不是最接近局部最优解。所以效果比较差\n",
    "\n",
    "\n",
    "# import numpy as np\n",
    "# with tf.Session() as sess:\n",
    "#     ckpt = tf.train.get_checkpoint_state('.')\n",
    "#     if ckpt and ckpt.model_checkpoint_path:\n",
    "#         saver.restore(sess, ckpt.model_checkpoint_path)\n",
    "#         final_pred, acc = sess.run(\n",
    "#             [pred, accuracy],\n",
    "#             feed_dict={\n",
    "#                 x: mnist.test.images[:16],\n",
    "#                 y: mnist.test.labels[:16]\n",
    "#             })\n",
    "#         orders = np.argsort(final_pred)\n",
    "#         plt.figure(figsize=(8, 8))\n",
    "#         print(acc)\n",
    "#         for idx in range(16):\n",
    "#             order = orders[idx, :][-1]\n",
    "#             prob = final_pred[idx, :][order]\n",
    "#             plt.subplot(4, 4, idx + 1)\n",
    "#             plt.axis('off')\n",
    "#             plt.title('{}: [{}]-[{:.1f}%]'.format(mnist.test.labels[idx],\n",
    "#                                                   order, prob * 100))\n",
    "#             plt.imshow(mnist.test.images[idx].reshape((28, 28)))\n",
    "\n",
    "#     else:\n",
    "#         pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
